JavaScriptã®ããã©ãŒãã³ã¹ãã³ãããŒãã³ã°ã«é¢ããå æ¬çãªã¬ã€ãããã€ã¯ããã³ãããŒã¯ã®å®è£ ããã¹ããã©ã¯ãã£ã¹ãããããèœãšã穎ã«çŠç¹ãåœãŠãŠããŸãã
JavaScriptããã©ãŒãã³ã¹ãã³ãããŒãã³ã°ïŒãã€ã¯ããã³ãããŒã¯ã®å®è£
ãŠã§ãéçºã®äžçã§ã¯ãã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãæãéèŠã§ããJavaScriptã¯ãã»ãšãã©ã®ã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®åååã§ãããããã©ãŒãã³ã¹æé©åã®éèŠãªé åã«ãªãããšããããããŸããJavaScriptã³ãŒãã广çã«æ¹åããããã«ãéçºè ã¯ãã®ããã©ãŒãã³ã¹ã枬å®ã»åæããããã®ä¿¡é Œã§ããããŒã«ãšãã¯ããã¯ãå¿ èŠãšããŸããããã§ç»å Žããã®ããã³ãããŒãã³ã°ã§ãããã®ã¬ã€ãã§ã¯ãç¹ã«ãã€ã¯ããã³ãããŒãã³ã°ã«çŠç¹ãåœãŠãŸããããã¯ãJavaScriptã³ãŒãã®å°ããªç¹å®ã®éšåã®ããã©ãŒãã³ã¹ãåé¢ããŠæž¬å®ããããã«äœ¿çšãããææ³ã§ãã
ãã³ãããŒãã³ã°ãšã¯äœãïŒ
ãã³ãããŒãã³ã°ãšã¯ãããã³ãŒãã®ããã©ãŒãã³ã¹ãæ¢ç¥ã®æšæºãä»ã®ã³ãŒããšæ¯èŒããŠæž¬å®ããããã»ã¹ã§ããããã«ãããéçºè ã¯ã³ãŒã倿Žã®åœ±é¿ãå®éåããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããåãåé¡ã解決ããããã®ããŸããŸãªã¢ãããŒããæ¯èŒã§ããŸãããã³ãããŒãã³ã°ã«ã¯ããã€ãã®çš®é¡ããããŸãã以äžã«äŸãæããŸãã
- ãã¯ããã³ãããŒãã³ã°ïŒã¢ããªã±ãŒã·ã§ã³å šäœãŸãã¯å€§èŠæš¡ãªã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ã枬å®ããŸãã
- ãã€ã¯ããã³ãããŒãã³ã°ïŒå°èŠæš¡ã§åé¢ãããã³ãŒãã¹ããããã®ããã©ãŒãã³ã¹ã枬å®ããŸãã
- ãããã¡ã€ãªã³ã°ïŒããã°ã©ã ã®å®è¡ãåæããæéãè²»ããããŠããé åãç¹å®ããŸãã
ãã®èšäºã§ã¯ãç¹ã«ãã€ã¯ããã³ãããŒãã³ã°ã«ã€ããŠè©³ããæãäžããŸãã
ãªããã€ã¯ããã³ãããŒãã³ã°ãªã®ãïŒ
ãã€ã¯ããã³ãããŒãã³ã°ã¯ãç¹å®ã®é¢æ°ãã¢ã«ãŽãªãºã ãæé©åããå¿ èŠãããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸããããã«ãããæ¬¡ã®ããšãå¯èœã«ãªããŸãã
- ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããïŒå°ããªã³ãŒãã¹ããããã«çŠç¹ãåœãŠãããšã§ãããã©ãŒãã³ã¹åé¡ãåŒãèµ·ãããŠããæ£ç¢ºãªã³ãŒãè¡ãç¹å®ã§ããŸãã
- ç°ãªãå®è£ ãæ¯èŒããïŒåãçµæãåŸãããã®ããŸããŸãªæ¹æ³ããã¹ãããã©ããæãå¹ççãã倿ã§ããŸããäŸãã°ãç°ãªãã«ãŒãæè¡ãæååé£çµã¡ãœããããŸãã¯ããŒã¿æ§é ã®å®è£ ã®æ¯èŒãªã©ã§ãã
- æé©åã®åœ±é¿ã枬å®ããïŒã³ãŒãã«å€æŽãå ããåŸããã€ã¯ããã³ãããŒã¯ã䜿çšããŠãæé©åãæåŸ éãã®å¹æããããããããšã確èªã§ããŸãã
- JavaScriptãšã³ãžã³ã®åäœãçè§£ããïŒãã€ã¯ããã³ãããŒã¯ã¯ãããŸããŸãªJavaScriptãšã³ãžã³ïŒäŸïŒChromeã®V8ãFirefoxã®SpiderMonkeyãSafariã®JavaScriptCoreãNode.jsïŒãã©ã®ããã«ã³ãŒããæé©åãããã®åŸ®åŠãªåŽé¢ãæããã«ããããšãã§ããŸãã
ãã€ã¯ããã³ãããŒã¯ã®å®è£ ïŒãã¹ããã©ã¯ãã£ã¹
æ£ç¢ºã§ä¿¡é Œæ§ã®é«ããã€ã¯ããã³ãããŒã¯ãäœæããã«ã¯ãæ éãªæ€èšãå¿ èŠã§ãã以äžã«ãåŸãã¹ããã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãã
1. ãã³ãããŒã¯ããŒã«ãéžæãã
ããã€ãã®JavaScriptãã³ãããŒã¯ããŒã«ãå©çšå¯èœã§ãã人æ°ã®ããéžæè¢ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- Benchmark.jsïŒçµ±èšçã«ä¿¡é Œã§ããçµæãæäŸãããå ç¢ã§åºã䜿çšãããŠããã©ã€ãã©ãªã§ãããŠã©ãŒã ã¢ããå埩ãçµ±èšåæã忣æ€åºãèªåçã«åŠçããŸãã
- jsPerfïŒJavaScriptããã©ãŒãã³ã¹ãã¹ããäœæã»å ±æããããã®ãªã³ã©ã€ã³ãã©ãããã©ãŒã ã§ããïŒæ³šïŒjsPerfã¯çŸåšç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸããããäŸç¶ãšããŠæçšãªãªãœãŒã¹ãšãªãåŸãŸãïŒã
- `console.time`ãš`console.timeEnd`ã䜿çšããæåã¿ã€ãã³ã°ïŒæŽç·ŽãããŠã¯ããŸãããããã®ã¢ãããŒãã¯è¿ éã§ç°¡åãªãã¹ãã«åœ¹ç«ã¡ãŸãã
ããè€éã§çµ±èšçã«å³å¯ãªãã³ãããŒã¯ã«ã¯ãäžè¬çã«Benchmark.jsãæšå¥šãããŸãã
2. å€éšããã®å¹²æžãæå°éã«æãã
æ£ç¢ºãªçµæãä¿èšŒããããã«ãã³ãŒãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããå€éšèŠå ãæå°éã«æããŠãã ãããããã«ã¯ä»¥äžãå«ãŸããŸãã
- äžèŠãªãã©ãŠã¶ã¿ããã¢ããªã±ãŒã·ã§ã³ãéããïŒãããã¯CPUãªãœãŒã¹ãæ¶è²»ãããã³ãããŒã¯çµæã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãã©ãŠã¶æ¡åŒµæ©èœãç¡å¹ã«ããïŒæ¡åŒµæ©èœã¯ãŠã§ãããŒãžã«ã³ãŒããæ³šå ¥ãããã³ãããŒã¯ã劚害ããå¯èœæ§ããããŸãã
- å°çšã®ãã·ã³ã§ãã³ãããŒã¯ãå®è¡ããïŒå¯èœã§ããã°ãä»ã®ãªãœãŒã¹ã倧éã«æ¶è²»ããã¿ã¹ã¯ãå®è¡ãããŠããªããã·ã³ã䜿çšããŠãã ããã
- äžè²«ãããããã¯ãŒã¯ç¶æ ã確ä¿ããïŒãã³ãããŒã¯ã«ãããã¯ãŒã¯ãªã¯ãšã¹ããå«ãŸããå Žåããããã¯ãŒã¯æ¥ç¶ãå®å®ããŠããŠé«éã§ããããšã確èªããŠãã ããã
3. ãŠã©ãŒã ã¢ããå埩
JavaScriptãšã³ãžã³ã¯ãå®è¡æã«ã³ãŒããæé©åããããã«Just-In-TimeïŒJITïŒã³ã³ãã€ã«ã䜿çšããŸããããã¯ã颿°ãæåã«æ°åå®è¡ããããšãã¯ããã®åŸã®å®è¡ãããé ããªãå¯èœæ§ãããããšãæå³ããŸãããããèæ ®ã«å ¥ããããããã³ãããŒã¯ã«ãŠã©ãŒã ã¢ããå埩ãå«ããããšãéèŠã§ãããããã®å埩ã«ãããå®éã®æž¬å®ãè¡ãããåã«ãšã³ãžã³ãã³ãŒããæé©åã§ããŸãã
Benchmark.jsã¯ãŠã©ãŒã ã¢ããå埩ãèªåçã«åŠçããŸããæåã§ã¿ã€ãã³ã°ãèšãå Žåã¯ãã¿ã€ããŒãéå§ããåã«ã³ãŒãã¹ãããããæ°åå®è¡ããŠãã ããã
4. çµ±èšçæææ§
ããã©ãŒãã³ã¹ã®å€åã¯ã©ã³ãã ãªèŠå ã«ããçºçããå¯èœæ§ããããŸãããã³ãããŒã¯çµæãçµ±èšçã«ææã§ããããšãä¿èšŒããããã«ããã³ãããŒã¯ãè€æ°åå®è¡ããå¹³åå®è¡æéãšæšæºåå·®ãèšç®ããŠãã ãããBenchmark.jsã¯ãããèªåçã«åŠçããå¹³åå€ãæšæºåå·®ãããã³èª€å·®ã®ç¯å²ãæäŸããŸãã
5. ææå°æ©ãªæé©åãé¿ãã
ã³ãŒããæžãåããæé©åããããšããèªæã«é§ãããããšããããŸããããããããã¯ç¡é§ãªåªåãä¿å®ãå°é£ãªã³ãŒãã«ã€ãªããå¯èœæ§ããããŸãã代ããã«ããŸãæç¢ºã§æ£ããã³ãŒããæžãããšã«éäžãããã®åŸãã³ãããŒãã³ã°ã䜿çšããŠããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããæé©åã®åãçµã¿ãå°ããŠãã ããããææå°æ©ãªæé©åã¯è«žæªã®æ ¹æºã§ããããšããæ Œèšãå¿ããªãã§ãã ããã
6. è€æ°ã®ç°å¢ã§ãã¹ããã
JavaScriptãšã³ãžã³ã¯æé©åæŠç¥ãç°ãªããŸãããããã©ãŠã¶ã§ããŸãæ©èœããã³ãŒãããå¥ã®ãã©ãŠã¶ã§ã¯ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãããããã£ãŠã以äžãå«ãè€æ°ã®ç°å¢ã§ãã³ãããŒã¯ããã¹ãããããšãäžå¯æ¬ ã§ãã
- ç°ãªããã©ãŠã¶ïŒChrome, Firefox, Safari, Edgeã
- åããã©ãŠã¶ã®ç°ãªãããŒãžã§ã³ïŒãã©ãŠã¶ã®ããŒãžã§ã³éã§ããã©ãŒãã³ã¹ãç°ãªãããšããããŸãã
- Node.jsïŒã³ãŒããNode.jsç°å¢ã§å®è¡ãããå Žåã¯ãããã§ããã³ãããŒã¯ãåã£ãŠãã ããã
- ã¢ãã€ã«ããã€ã¹ïŒã¢ãã€ã«ããã€ã¹ã¯ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãšã¯CPUãã¡ã¢ãªã®ç¹æ§ãç°ãªããŸãã
7. å®äžçã®ã·ããªãªã«çŠç¹ãåœãŠã
ãã€ã¯ããã³ãããŒã¯ã¯ãå®äžçã®ãŠãŒã¹ã±ãŒã¹ãåæ ããã¹ãã§ããã³ãŒããå®éã«ã©ã®ããã«äœ¿çšãããããæ£ç¢ºã«è¡šããªã人工çãªã·ããªãªãäœæããã®ã¯é¿ããŠãã ãããæ¬¡ã®ãããªèŠå ãèæ ®ããŠãã ããã
- ããŒã¿ãµã€ãºïŒã¢ããªã±ãŒã·ã§ã³ãåŠçããã§ããã代衚çãªããŒã¿ãµã€ãºã§ãã¹ãããŠãã ããã
- å ¥åãã¿ãŒã³ïŒãã³ãããŒã¯ã§ã¯çŸå®çãªå ¥åãã¿ãŒã³ã䜿çšããŠãã ããã
- ã³ãŒãã®ã³ã³ããã¹ãïŒãã³ãããŒã¯ã³ãŒããå®äžçã®ç°å¢ãšåæ§ã®ã³ã³ããã¹ãã§å®è¡ãããããã«ããŠãã ããã
8. ã¡ã¢ãªäœ¿çšéãèæ ®ãã
å®è¡æéã¯äž»èŠãªé¢å¿äºã§ãããã¡ã¢ãªäœ¿çšéãéèŠã§ããéå°ãªã¡ã¢ãªæ¶è²»ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ãªã©ã®ããã©ãŒãã³ã¹åé¡ã«ã€ãªããå¯èœæ§ããããŸãããã©ãŠã¶ã®éçºè ããŒã«ãNode.jsã®ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãã³ãŒãã®ã¡ã¢ãªäœ¿çšéãåæããããšãæ€èšããŠãã ããã
9. ãã³ãããŒã¯ãææžåãã
以äžãå«ããã³ãããŒã¯ãæç¢ºã«ææžåããŠãã ããã
- ãã³ãããŒã¯ã®ç®çïŒã³ãŒãã¯äœããã¹ããïŒ
- æ¹æ³è«ïŒãã³ãããŒã¯ã¯ã©ã®ããã«å®è¡ããããïŒ
- ç°å¢ïŒã©ã®ãã©ãŠã¶ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã䜿çšããããïŒ
- çµæïŒå¹³åå®è¡æéãšæšæºåå·®ã¯ã©ãã ã£ããïŒ
- ä»®å®ãå¶éäºé ïŒçµæã®æ£ç¢ºæ§ã«åœ±é¿ãäžããå¯èœæ§ã®ããèŠå ã¯ãããïŒ
äŸïŒæååé£çµã®ãã³ãããŒãã³ã°
JavaScriptã«ãããæååé£çµã®ããŸããŸãªæ¹æ³ãæ¯èŒãããšããå®è·µçãªäŸã§ããã€ã¯ããã³ãããŒãã³ã°ã説æããŸãããã ç§ãã¡ã¯`+`æŒç®åããã³ãã¬ãŒããªãã©ã«ããããŠ`join()`ã¡ãœããã®äœ¿çšãæ¯èŒããŸãã
Benchmark.jsã®äœ¿çšäŸïŒ
const Benchmark = require('benchmark');
const suite = new Benchmark.Suite;
const n = 1000;
const strings = Array.from({ length: n }, (_, i) => `string-${i}`);
// add tests
suite.add('Plus Operator', function() {
let result = '';
for (let i = 0; i < n; i++) {
result += strings[i];
}
})
.add('Template Literals', function() {
let result = ``;
for (let i = 0; i < n; i++) {
result = `${result}${strings[i]}`;
}
})
.add('Array.join()', function() {
strings.join('');
})
// add listeners
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run async
.run({ 'async': true });
説æïŒ
- ãã®ã³ãŒãã¯Benchmark.jsã©ã€ãã©ãªãã€ã³ããŒãããŸãã
- æ°ããBenchmark.SuiteãäœæãããŸãã
- é£çµãã¹ãçšã®æååã®é åãäœæãããŸãã
- 3ã€ã®ç°ãªãæååé£çµã¡ãœãããã¹ã€ãŒãã«è¿œå ãããŸãã åã¡ãœããã¯ãBenchmark.jsãè€æ°åå®è¡ãã颿°å ã«ã«ãã»ã«åãããŠããŸãã
- åãµã€ã¯ã«ã®çµæããã°ã«èšé²ããæéã®ã¡ãœãããç¹å®ããããã«ã€ãã³ããªã¹ããŒã远å ãããŸãã
- `run()`ã¡ãœããããã³ãããŒã¯ãéå§ããŸãã
æåŸ ãããåºåïŒç°å¢ã«ãã£ãŠç°ãªãå ŽåããããŸãïŒïŒ
Plus Operator x 1,234 ops/sec ±2.03% (82 runs sampled)
Template Literals x 1,012 ops/sec ±1.88% (83 runs sampled)
Array.join() x 12,345 ops/sec ±1.22% (88 runs sampled)
Fastest is Array.join()
ãã®åºåã¯ãåã¡ãœããã®1ç§ãããã®æäœæ°ïŒops/secïŒãšèª€å·®ã®ç¯å²ã瀺ããŠããŸãããã®äŸã§ã¯ã`Array.join()`ãä»ã®2ã€ã®ã¡ãœãããããèããé«éã§ããããã¯ãJavaScriptãšã³ãžã³ãé åæäœãæé©åããæ¹æ³ã«èµ·å ããäžè¬çãªçµæã§ãã
ããããèœãšã穎ãšãã®åé¿æ¹æ³
ãã€ã¯ããã³ãããŒãã³ã°ã¯ããªãããŒãªå Žåããããããããèœãšã穎ã«é¥ããããã§ããæ³šæãã¹ãç¹ãããã€ã玹ä»ããŸãã
1. JITã³ã³ãã€ã«ã«ããäžæ£ç¢ºãªçµæ
èœãšã穎ïŒJITã³ã³ãã€ã«ãèæ ®ããªããšãã³ãŒãã®æåã®æ°åã®å埩ãåŸç¶ã®å埩ãããé ããªãå¯èœæ§ããããããäžæ£ç¢ºãªçµæã«ã€ãªããããšããããŸãã
解決çïŒãŠã©ãŒã ã¢ããå埩ã䜿çšããŠã枬å®ãè¡ãåã«ãšã³ãžã³ãã³ãŒããæé©åã§ããããã«ããŸããBenchmark.jsã¯ãããèªåçã«åŠçããŸãã
2. ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®èŠèœãšã
èœãšã穎ïŒé »ç¹ãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãµã€ã¯ã«ã¯ãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãããã³ãããŒã¯ã倿°ã®äžæãªããžã§ã¯ããäœæããå Žåãæž¬å®æéäžã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããªã¬ãŒãããããšããããŸãã
解決çïŒãã³ãããŒã¯å ã§ã®äžæãªããžã§ã¯ãã®äœæãæå°éã«æããããã«ããŠãã ããããŸãããã©ãŠã¶ã®éçºè ããŒã«ãNode.jsã®ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ã¢ã¯ãã£ããã£ãç£èŠããããšãã§ããŸãã
3. çµ±èšçæææ§ã®ç¡èŠ
èœãšã穎ïŒãã³ãããŒã¯ã®1åã®å®è¡ã«é Œããšãããã©ãŒãã³ã¹ã®å€åã¯ã©ã³ãã ãªèŠå ã«ãã£ãŠçºçããå¯èœæ§ãããããã誀解ãæãçµæã«ã€ãªããããšããããŸãã
解決çïŒãã³ãããŒã¯ãè€æ°åå®è¡ããå¹³åå®è¡æéãšæšæºåå·®ãèšç®ããŠãã ãããBenchmark.jsã¯ãããèªåçã«åŠçããŸãã
4. éçŸå®çãªã·ããªãªã®ãã³ãããŒãã³ã°
èœãšã穎ïŒå®äžçã®ãŠãŒã¹ã±ãŒã¹ãæ£ç¢ºã«è¡šããªã人工çãªã·ããªãªãäœæãããšãå®éã«ã¯æçã§ãªãæé©åã«ã€ãªããå¯èœæ§ããããŸãã
解決çïŒã¢ããªã±ãŒã·ã§ã³ãå®éã«ã©ã®ããã«äœ¿çšããããã代衚ããã³ãŒãã®ãã³ãããŒãã³ã°ã«çŠç¹ãåœãŠãŠãã ãããããŒã¿ãµã€ãºãå ¥åãã¿ãŒã³ãã³ãŒãã®ã³ã³ããã¹ããªã©ã®èŠå ãèæ ®ããŠãã ããã
5. ãã€ã¯ããã³ãããŒã¯ã®ããã®éå°ãªæé©å
èœãšã穎ïŒãã€ã¯ããã³ãããŒã¯ã®ããã«ç¹å¥ã«ã³ãŒããæé©åãããšãå¯èªæ§ãä¿å®æ§ãäœããå®äžçã®ã·ããªãªã§ã¯ããŸãæ©èœããªãå¯èœæ§ã®ããã³ãŒãã«ã€ãªããããšããããŸãã
解決çïŒãŸãæç¢ºã§æ£ããã³ãŒããæžãããšã«éäžãããã®åŸãã³ãããŒãã³ã°ã䜿çšããŠããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããæé©åã®åãçµã¿ãå°ããŠãã ãããããããªããã©ãŒãã³ã¹åäžã®ããã«ãå¯èªæ§ãä¿å®æ§ãç ç²ã«ããªãã§ãã ããã
6. è€æ°ã®ç°å¢ã§ãã¹ãããªãããš
èœãšã穎ïŒããç°å¢ã§ããŸãæ©èœããã³ãŒããããã¹ãŠã®ç°å¢ã§ããŸãæ©èœãããšä»®å®ããããšã¯ãé«ãã€ãééãã«ãªãå¯èœæ§ããããŸãã
解決çïŒç°ãªããã©ãŠã¶ããã©ãŠã¶ã®ããŒãžã§ã³ãNode.jsãã¢ãã€ã«ããã€ã¹ãªã©ãè€æ°ã®ç°å¢ã§ãã³ãããŒã¯ããã¹ãããŠãã ããã
ããã©ãŒãã³ã¹æé©åã®ããã®ã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãŠãŒã¶ãŒã察象ãšããã¢ããªã±ãŒã·ã§ã³ãéçºããéã«ã¯ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ãã以äžã®èŠå ãèæ ®ããŠãã ããã
- ãããã¯ãŒã¯é å»¶ïŒäžçäžã®ããŸããŸãªå°åã®ãŠãŒã¶ãŒã¯ãç°ãªããããã¯ãŒã¯é å»¶ãçµéšããå¯èœæ§ããããŸãããããã¯ãŒã¯ãªã¯ãšã¹ãã®æ°ãšè»¢éãããããŒã¿ã®ãµã€ãºãæå°éã«æããããã«ã³ãŒããæé©åããŠãã ãããã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã䜿çšããŠãéçã¢ã»ããããŠãŒã¶ãŒã®è¿ãã«ãã£ãã·ã¥ããããšãæ€èšããŠãã ããã
- ããã€ã¹ã®èœåïŒãŠãŒã¶ãŒã¯ãããŸããŸãªCPUããã³ã¡ã¢ãªèœåãæã€ããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŠããå¯èœæ§ããããŸããäœã¹ããã¯ã®ããã€ã¹ã§ãå¹ççã«å®è¡ã§ããããã«ã³ãŒããæé©åããŠãã ãããã¬ã¹ãã³ã·ããã¶ã€ã³æè¡ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªç»é¢ãµã€ãºãè§£å床ã«é©å¿ãããããšãæ€èšããŠãã ããã
- æåã»ãããšããŒã«ã©ã€ãŒãŒã·ã§ã³ïŒç°ãªãæåã»ããã®åŠçãã¢ããªã±ãŒã·ã§ã³ã®ããŒã«ã©ã€ãºã¯ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããå¹ççãªæåååŠçã¢ã«ãŽãªãºã ã䜿çšãã翻蚳ããã©ãŒãããåŠçã«ã¯ããŒã«ã©ã€ãŒãŒã·ã§ã³ã©ã€ãã©ãªã®äœ¿çšãæ€èšããŠãã ããã
- ããŒã¿ã¹ãã¬ãŒãžãšååŸïŒã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ã¢ã¯ã»ã¹ãã¿ãŒã³ã«æé©åãããããŒã¿ã¹ãã¬ãŒãžãšååŸæŠç¥ãéžæããŠãã ãããããŒã¿ããŒã¹ã¯ãšãªã®æ°ãæžããããã«ãã£ãã·ã³ã°ã®äœ¿çšãæ€èšããŠãã ããã
çµè«
JavaScriptã®ããã©ãŒãã³ã¹ãã³ãããŒãã³ã°ãç¹ã«ãã€ã¯ããã³ãããŒãã³ã°ã¯ãã³ãŒããæé©åããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã®è²ŽéãªããŒã«ã§ãããã®ã¬ã€ãã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããŸããŸãªå®è£ ãæ¯èŒããæé©åã®åœ±é¿ã枬å®ããã®ã«åœ¹ç«ã€ãæ£ç¢ºã§ä¿¡é Œæ§ã®é«ããã³ãããŒã¯ãäœæã§ããŸããè€æ°ã®ç°å¢ã§ãã¹ãããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããã°ããŒãã«ãªèŠå ãèæ ®ããããšãå¿ããªãã§ãã ããã ãã³ãããŒãã³ã°ãå埩çãªããã»ã¹ãšããŠåãå ¥ããã³ãŒãã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠã»æ¹åããŠãäžçäžã®ãŠãŒã¶ãŒã«ã¹ã ãŒãºã§å¿çæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãä¿èšŒããŠãã ãããããã©ãŒãã³ã¹ãåªå ããããšã§ãæ©èœçã§ããã ãã§ãªãã䜿çšããã®ã楜ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããè¯å®çãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«è²¢ç®ããæçµçã«ããžãã¹ç®æšãéæããããšãã§ããŸãã